home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / xbus.h < prev   
C/C++ Source or Header  |  1992-12-03  |  4KB  |  134 lines

  1. /*
  2.  * xbus.h --
  3.  *
  4.  *    Declarations of interface to the xbus board.
  5.  *
  6.  * Copyright 1990 Regents of the University of California
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  * $Header: /sprite/src/lib/include/dev/RCS/xbus.h,v 1.1 92/07/09 18:35:10 elm Exp Locker: elm $ SPRITE (Berkeley)
  16.  */
  17.  
  18. #ifndef _XBUS
  19. #define _XBUS
  20.  
  21. #define    IOC_XBUS            (21 << 16)
  22. #define    IOC_XBUS_RESET            (IOC_XBUS | 1)
  23. #define    IOC_XBUS_DEBUG_ON        (IOC_XBUS | 2)
  24. #define    IOC_XBUS_DEBUG_OFF        (IOC_XBUS | 3)
  25. #define    IOC_XBUS_READ_REG        (IOC_XBUS | 4)
  26. #define    IOC_XBUS_WRITE_REG        (IOC_XBUS | 5)
  27. #define    IOC_XBUS_DO_XOR            (IOC_XBUS | 6)
  28. #define    IOC_XBUS_CHECK_PARITY        (IOC_XBUS | 7)
  29. #define    IOC_XBUS_LOCK_VME        (IOC_XBUS | 8)
  30. #define    IOC_XBUS_HIPPI_SRC_BUFFER    (IOC_XBUS | 10)
  31. #define    IOC_XBUS_HIPPI_DST_BUFFER    (IOC_XBUS | 11)
  32. #define    IOC_XBUS_HIPPI_DST_FLUSH    (IOC_XBUS | 12)
  33. #define    IOC_XBUS_USE_INTR_STATUS    (IOC_XBUS | 13)
  34. #define    IOC_XBUS_TEST_START        (IOC_XBUS | 1000)
  35. #define    IOC_XBUS_TEST_STOP        (IOC_XBUS | 1001)
  36. #define    IOC_XBUS_TEST_STATS        (IOC_XBUS | 1002)
  37.  
  38.  
  39. /*
  40.  * This isn't a hard limit, but it's nice to include it here (so user
  41.  * programs can see it).
  42.  */
  43. #define    DEV_XBUS_MAX_XOR_BUFS        20
  44.  
  45. /*
  46.  * The maximum size of a string returned from IOC_XBUS_TEST_STATS.
  47.  */
  48. #define    DEV_XBUS_TEST_MAX_STAT_STR    1000
  49.  
  50. typedef struct DevXbusRegisterAccess {
  51.     unsigned int    registerNum;
  52.     unsigned int    value;
  53. } DevXbusRegisterAccess;
  54.  
  55. #define    DEV_XBUS_MAX_BOARDS        16
  56.  
  57. /*
  58.  * Sun4 address space the link occupies (2=d16, 3=d32)
  59.  */
  60. #define DEV_XBUS_ADDR_SPACE        3
  61.  
  62. /*
  63.  * This is how far the board ID must be shifted to get the base address.
  64.  */
  65. #define    DEV_XBUS_ID_ADDR_SHIFT        28
  66.  
  67. /*
  68.  * This is the start of memory relative to the start of XBUS address space.
  69.  */
  70. #define    DEV_XBUS_MEMORY_OFFSET        0x08000000
  71.  
  72. #define    DEV_XBUS_REG_RESET        0x000
  73. #define    DEV_XBUS_REG_ATC0_PAR_ADDR    0x080
  74. #define    DEV_XBUS_REG_ATC0_PAR_DATA    0x084
  75. #define    DEV_XBUS_REG_ATC1_PAR_ADDR    0x088
  76. #define    DEV_XBUS_REG_ATC1_PAR_DATA    0x08c
  77. #define    DEV_XBUS_REG_ATC2_PAR_ADDR    0x090
  78. #define    DEV_XBUS_REG_ATC2_PAR_DATA    0x094
  79. #define    DEV_XBUS_REG_ATC3_PAR_ADDR    0x098
  80. #define    DEV_XBUS_REG_ATC3_PAR_DATA    0x09c
  81. #define    DEV_XBUS_REG_SERVER_PAR_ADDR    0x0a0
  82. #define    DEV_XBUS_REG_SERVER_PAR_DATA    0x0c0
  83. #define    DEV_XBUS_REG_STATUS        0x0e0
  84. #define    DEV_XBUS_REG_HIPPID_CTRL_FIFO    0x400
  85. #define    DEV_XBUS_REG_HIPPIS_CTRL_FIFO    0x800
  86. #define    DEV_XBUS_REG_XOR_CTRL_FIFO    0xc00
  87.  
  88. #define    DEV_XBUS_XOR_GO            0x80000000
  89.  
  90. #define    DEV_XBUS_RESETREG_FREEZE    (1 << 0)
  91. #define    DEV_XBUS_RESETREG_MEMORY    (1 << 1)
  92. #define    DEV_XBUS_RESETREG_HIPPID_ADDR_FLUSH    (1 << 2)
  93. #define    DEV_XBUS_RESETREG_XOR        (1 << 3)
  94. #define    DEV_XBUS_RESETREG_HIPPID    (1 << 4)
  95. #define    DEV_XBUS_RESETREG_HIPPIS    (1 << 5)
  96. #define    DEV_XBUS_RESETREG_ATC0        (1 << 6)
  97. #define    DEV_XBUS_RESETREG_ATC1        (1 << 7)
  98. #define    DEV_XBUS_RESETREG_ATC2        (1 << 8)
  99. #define    DEV_XBUS_RESETREG_ATC3        (1 << 9)
  100. #define    DEV_XBUS_RESETREG_XBUS        (1 << 11)
  101.  
  102. #define    DEV_XBUS_RESETREG_CLEAR_PARITY    (1 << 12)
  103. #define    DEV_XBUS_RESETREG_CHECK_PARITY    (1 << 13)
  104. #define    DEV_XBUS_RESETREG_CLEAR_XOR_BIT    (1 << 15)
  105. #define    DEV_XBUS_RESETREG_RESET        0x0
  106. #define    DEV_XBUS_RESETREG_NORMAL    0xffff
  107.  
  108. #define    DEV_XBUS_STATUS_ATC0_PARITY_ERR        (1 << 0)
  109. #define    DEV_XBUS_STATUS_ATC1_PARITY_ERR        (1 << 1)
  110. #define    DEV_XBUS_STATUS_ATC2_PARITY_ERR        (1 << 2)
  111. #define    DEV_XBUS_STATUS_ATC3_PARITY_ERR        (1 << 3)
  112. #define    DEV_XBUS_STATUS_SERVER_PARITY_ERR    (1 << 4)
  113. #define    DEV_XBUS_STATUS_XOR_INTERRUPT        (1 << 5)
  114. #define    DEV_XBUS_STATUS_HIPPID_FIFO_NONEMPTY    (1 << 6)
  115. #define    DEV_XBUS_STATUS_HIPPIS_FIFO_NONEMPTY    (1 << 7)
  116.  
  117. typedef struct DevXbusParityErrorInfo {
  118.     volatile unsigned int    data;
  119.     volatile unsigned int    addr;
  120. } DevXbusParityErrorInfo;
  121.  
  122. typedef struct DevXbusCtrlRegs {
  123.     volatile unsigned int    reset;
  124.     volatile unsigned int    pad1[0x1f];
  125.     DevXbusParityErrorInfo atcParity[4];
  126.     volatile unsigned int    serverParityAddr;
  127.     volatile unsigned int    pad2[0x7];
  128.     volatile unsigned int    serverParityData;
  129.     volatile unsigned int    pad3[0x7];
  130.     volatile unsigned int    status;
  131. } DevXbusCtrlRegs;
  132.  
  133. #endif    /* _XBUS */
  134.